// @ts-nocheck==
import * as util from "@/utils"
import { computed, reactive, watchEffect } from "vue"
import * as em from '@/enums';
export default function (cfg: cfg = {}) {
    const { 数据单项组, 插组件, 筛选组 } = cfg
    const 单项组 = reactive([] as 单项组)
    const a = reactive({
        显示: false,
    })
    // const 筛选设置 = reactive({
    //     比较运算符: ["=", "like", "in"],
    //     字段名: ["名称"],
    //     模板: {
    //         字段名: "泵型号",
    //         比较运算符: "like",
    //         字段值: "",
    //     },
    // })

    // function 外部传值筛选(arr) {
    function 改且保存(arr) {
        util.数组重予(单项组, arr)
        保存()
    }

    function 增() {
        单项组.unshift({
            字段名: "",
            比较运算符: "",
            字段值: "",
        })
    }

    function 保存() {
        // 筛选组 = util.深拷贝(单项组)
        // console.log(`单项组 👉`,单项组)
        util.数组重予(筛选组, util.深拷贝(单项组))
    }

    function 删(单项) {
        util.删除元素(单项组, 单项)
    }

    function 清除() {
        单项组.length = 0
        a.显示 = false
        保存()
    }

    const 供筛选字段名s = computed(() => {
        let 字段组 = 插组件?.组件.字段组
        let 字段名s = util.数组中取属性组(字段组, '名称')
        return 字段名s
    })

    watchEffect(() => {
        for (const 单项 of 单项组) {
            let 字段名 = 单项.字段名
            let 候选比较运算符 = ["=", "like", "in"]
            const 字段 = 插组件?.取字段(字段名)
            // console.log(`字段 👉`, 字段)
            switch (字段?.类型) {
                case em.字段类型.float64:
                case em.字段类型.int:
                    候选比较运算符.push('±?%')
                    break;
            }
            单项.候选比较运算符 = 候选比较运算符

            if (单项.比较运算符?.includes('?%')) {
                if (!单项.百分数) {
                    单项.百分数 = 10
                }
                // console.log(`单项.基准数 👉`,单项.基准数)
                if (!单项.基准数) {
                    let 第一条数据单项 = 数据单项组[0]
                    单项.基准数 = 100
                    if (第一条数据单项) {
                        let 值 = 第一条数据单项[字段名]
                        单项.基准数 = 值
                    }
                }
                // console.log(`单项.基准数2 👉`,单项.基准数)
            }
        }
    })

    return {
        a,
        清除,
        供筛选字段名s,
        // 筛选设置,
        单项组,
        增,
        删,
        改且保存,
        保存,
    }
}
